package ar.com.psicosoft.model.psicosoft;

import java.io.Serializable;

import javax.persistence.*;

import java.util.List;

/**
 * The persistent class for the paciente database table.
 * 
 */
@Entity
@Table(name = "paciente", schema = "psicosoft")
@NamedQueries({
		@NamedQuery(name = "Paciente.buscarPorId", query = "SELECT p FROM Paciente p WHERE p.idPersona = :idPersona"),
		@NamedQuery(name = "Paciente.buscarPacientes", query = "SELECT p FROM Paciente p"),
		@NamedQuery(name = "Paciente.eliminarPacientePorId", query = "DELETE FROM Paciente p WHERE p.idPersona = :idPersona") })
@PrimaryKeyJoinColumn(name = "\"idPersona\"")
public class Paciente extends Persona implements Serializable {
	private static final long serialVersionUID = 1L;

	@Column(name = "\"datosFamiliares\"", length = 40)
	private String datosFamiliares;

	@Column(length = 2147483647)
	private String discapacidad;

	@Column(name = "\"idProfesional\"")
	private Integer idProfesional;

	@Column(length = 2147483647)
	private String medicacion;

	@Column(length = 2147483647)
	private String motivo;

	@Column(name = "\"precioAcordado\"", length = 15)
	private String precioAcordado;

	@Column(length = 40)
	private String profesion;

	@Column(length = 40)
	private String tutor;

	// bi-directional many-to-one association to Discapacidad
	@OneToMany(mappedBy = "paciente")
	private List<Discapacidad> discapacidads;

	// bi-directional many-to-one association to MedicacionPaciente
	@OneToMany(mappedBy = "paciente")
	private List<MedicacionPaciente> medicacionPacientes;

	// uni-directional one-to-one association to Persona
	@OneToOne(targetEntity = Persona.class, cascade = CascadeType.ALL)
	@JoinColumn(name = "\"idPersona\"", unique = true, nullable = false, insertable = false, updatable = false)
	private Persona persona;

	// bi-directional many-to-one association to Profesional
	@ManyToOne
	@JoinColumn(name = "\"idPersona\"", unique = true, nullable = false, insertable = false, updatable = false)
	private Profesional profesional;

	public Paciente() {
	}

	public String getDatosFamiliares() {
		return this.datosFamiliares;
	}

	public void setDatosFamiliares(String datosFamiliares) {
		this.datosFamiliares = datosFamiliares;
	}

	public String getDiscapacidad() {
		return this.discapacidad;
	}

	public void setDiscapacidad(String discapacidad) {
		this.discapacidad = discapacidad;
	}

	public Integer getIdProfesional() {
		return this.idProfesional;
	}

	public void setIdProfesional(Integer idProfesional) {
		this.idProfesional = idProfesional;
	}

	public String getMedicacion() {
		return this.medicacion;
	}

	public void setMedicacion(String medicacion) {
		this.medicacion = medicacion;
	}

	public String getMotivo() {
		return this.motivo;
	}

	public void setMotivo(String motivo) {
		this.motivo = motivo;
	}

	public String getPrecioAcordado() {
		return this.precioAcordado;
	}

	public void setPrecioAcordado(String precioAcordado) {
		this.precioAcordado = precioAcordado;
	}

	public String getProfesion() {
		return this.profesion;
	}

	public void setProfesion(String profesion) {
		this.profesion = profesion;
	}

	public String getTutor() {
		return this.tutor;
	}

	public void setTutor(String tutor) {
		this.tutor = tutor;
	}

	public List<Discapacidad> getDiscapacidads() {
		return this.discapacidads;
	}

	public void setDiscapacidads(List<Discapacidad> discapacidads) {
		this.discapacidads = discapacidads;
	}

	public Discapacidad addDiscapacidad(Discapacidad discapacidad) {
		getDiscapacidads().add(discapacidad);
		discapacidad.setPaciente(this);

		return discapacidad;
	}

	public Discapacidad removeDiscapacidad(Discapacidad discapacidad) {
		getDiscapacidads().remove(discapacidad);
		discapacidad.setPaciente(null);

		return discapacidad;
	}

	public List<MedicacionPaciente> getMedicacionPacientes() {
		return this.medicacionPacientes;
	}

	public void setMedicacionPacientes(
			List<MedicacionPaciente> medicacionPacientes) {
		this.medicacionPacientes = medicacionPacientes;
	}

	public MedicacionPaciente addMedicacionPaciente(
			MedicacionPaciente medicacionPaciente) {
		getMedicacionPacientes().add(medicacionPaciente);
		medicacionPaciente.setPaciente(this);

		return medicacionPaciente;
	}

	public MedicacionPaciente removeMedicacionPaciente(
			MedicacionPaciente medicacionPaciente) {
		getMedicacionPacientes().remove(medicacionPaciente);
		medicacionPaciente.setPaciente(null);

		return medicacionPaciente;
	}

	public Persona getPersona() {
		return this.persona;
	}

	public void setPersona(Persona persona) {
		this.persona = persona;
	}

	public Profesional getProfesional() {
		return this.profesional;
	}

	public void setProfesional(Profesional profesional) {
		this.profesional = profesional;
	}

}